#ifndef INPUTCONTROLLER_H
#define INPUTCONTROLLER_H

#include "gdn/GDN.h"

class GameConfigManager;

class InputController
{
	public:
		bool IsJumpPressed( const gdn::InputManager& input );
		bool IsWalkLeftPressed( const gdn::InputManager& input );
		bool IsWalkRightPressed( const gdn::InputManager& input );
		bool IsCrouchPressed( const gdn::InputManager& input );

		bool WasSelectionUpPressed( const gdn::Event& event );
		bool WasSelectionLeftPressed( const gdn::Event& event );
		bool WasSelectionRightPressed( const gdn::Event& event );
		bool WasSelectionDownPressed( const gdn::Event& event );

		bool IsRunPressed( const gdn::InputManager& input );

		bool WasPausePressed( const gdn::Event& event );

		bool IsLookUpPressed( const gdn::InputManager& input );
		bool IsLookLeftPressed( const gdn::InputManager& input );
		bool IsLookRightPressed( const gdn::InputManager& input );
		bool IsLookDownPressed( const gdn::InputManager& input );

	protected:
		gdn::Key::Code jumpKey;
		gdn::Key::Code walkLeftKey;
		gdn::Key::Code walkRightKey;
		gdn::Key::Code crouchKey;

		gdn::Key::Code selectionUpKey;
		gdn::Key::Code selectionLeftKey;
		gdn::Key::Code selectionRightKey;
		gdn::Key::Code selectionDownKey;

		gdn::Key::Code runKey;

		gdn::Key::Code pauseKey;

		gdn::Key::Code lookUpKey;
		gdn::Key::Code lookLeftKey;
		gdn::Key::Code lookRightKey;
		gdn::Key::Code lookDownKey;

		friend class GameConfigManager;
};

#endif // INPUTCONTROLLER_H
